Virtualization technologies have been used to allow a plurality of virtual computers (may be called virtual machines (VMs)) to run on a physical computer (may be called a physical machine). Using different virtual machines makes it possible to execute an information processing task and another information processing task separately so as not to cause any interference with each other. Therefore, even if virtual machines for individual users are configured on the same physical computer, information processing tasks for the individual users may be executed separately.
A physical machine runs management software to manage virtual machines. Such management software includes a virtual machine monitor (VMM), hypervisor, and management Operating System (OS). The management software allocates physical hardware resources that the physical machine has, such as Central Processing Unit (CPU) cores or Random Access Memory (RAM) space, to the virtual machines placed on the physical machine. Each virtual machine executes an OS for a user (may be called a guest OS or a user OS), independently of the other virtual machines. The OS of each virtual machine schedules processes started on the OS so as to perform the processes within resources allocated by the management software.
For the resource allocation, there has been proposed a virtual machine system in which resources are dynamically allocated to virtual machines. In this proposed virtual machine system, each virtual machine issues a resource request to management software. The management software performs an optimization operation on the basis of the resource requests received from the plurality of virtual machines, and allocates resources to each virtual machine. The management software gives resource allocation information indicating the allocation result to each virtual machine. Continual exchange of resource requests and resource allocation information between the plurality of virtual machines and the management software achieves dynamic resource allocation to each virtual machine.
Further, a data processing system including a processor (multi-core processor) equipped with a plurality of cores has been proposed. In this proposed data processing system, an OS or hypervisor learns the execution characteristics of a thread and generates thread performance data. When the thread is executed again thereafter, the OS assigns the thread to a core that is expected to execute the thread most efficiently among the plurality of cores, on the basis of the thread performance data.
Still further, a heterogeneous processing system including a plurality of cores having different power capabilities has been proposed. In this proposed heterogeneous processing system, a hypervisor presents virtual cores through virtualization, and allocates virtual cores to an OS. When receiving a scheduling request for executing a thread on a virtual core from the OS, the hypervisor selects a core on which to execute the thread and schedules the thread for the selected core. This enables the hypervisor to hide differences in power capabilities among the cores from the OS.
Please see, for example, International Publication Pamphlet No. 2008/132924, Japanese Laid-open Patent Publication No. 2009-151774, and International Publication Pamphlet No. 2012/170746.
Management software may dynamically adjust the allocation of resources to virtual machines according to the loads of the virtual machines. To achieve this dynamic resource allocation, the management software continuously obtains information on the loads of the virtual machines therefrom. However, if the management software and the individual virtual machines do not perform communication efficiently and a high communication overhead is incurred, a long time lag exists between a load change in a virtual machine and a change in the allocation of resources, which results in a failure in fully satisfying demands of the virtual machine.
For example, there is a method for communication between the management software and the virtual machines using “interrupt”. However, the “interrupt” needs an interrupted CPU resource to perform preprocessing that includes activating an interrupt handler and saving a processing state existing just before the interrupt, and then to call a routine for intended process including a load research. Therefore, the interrupt handler has a high overhead, which in turn causes a longer delay in communication. As a result, even if the load of a virtual machine rapidly increases, the amount of resources allocated to the virtual machine may not increase for some time, and thus an overload state may continue.